// 引入 gulp 模块
const gulp = require('gulp');

// 引入插入抽取代码插件
const fileinclude = require('gulp-file-include');
// 引入htmlmin插件
const htmlmin = require('gulp-htmlmin');

// 引入less插件
const less = require('gulp-less');
// 引入csso插件
const csso = require('gulp-csso');

// 引入babel插件
const babel = require('gulp-babel');
// 引入uglify插件
const uglify = require('gulp-uglify');

// 创建一个gulp任务   取名: first
// gulp.task('first', (callback) => {
//     gulp.src('./src/index.html')
//         .pipe(gulp.dest('./dist'));

//     console.log('人生第一个gulp任务 执行了！');
//     callback();
// });


// 1.压缩html代码任务
gulp.task('htmlmin', (callback) => {
    gulp.src('./src/*.html')
        .pipe(fileinclude())
        .pipe(htmlmin({ collapseWhitespace: true }))
        .pipe(gulp.dest('./dist'));
    callback();
});

// 2.压缩css代码任务
gulp.task('cssmin', (callback) => {
    gulp.src(['./src/css/*.less', './src/css/*.css'])
        .pipe(less())
        .pipe(csso())
        .pipe(gulp.dest('./dist/css'));
    callback();
});

// 3.压缩js代码任务
gulp.task('jsmin', (callback) => {
    gulp.src('./src/js/*.js')
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'));
    callback();
});

// 4.把剩余的文件夹拷贝进dist
gulp.task('copy', (callback) => {
    gulp.src('./src/images/*')
        .pipe(gulp.dest('./dist/images'));
    gulp.src('./src/upload/*')
        .pipe(gulp.dest('./dist/upload'))
    callback();
});

// 把所有任务集合成一个任务, 执行这个任务就执行了所有任务
gulp.task('default', gulp.series(['htmlmin', 'cssmin', 'jsmin', 'copy']));